/*
 * @Author: EvanXU evanxu8023@163.com
 * @Date: 2023-08-30 17:25:59
 * @LastEditors: EvanXU evanxu8023@163.com
 * @LastEditTime: 2024-08-24 10:06:25
 * @FilePath: \program\USER\version.c
 * @Description: 
 *  xxx 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
 */
#include "version.h"

#if (__ARMCC_VERSION >= 6000000)
/* AC5编译器版本 */
/* 内存起始地址 */
#define USER_PRO_START_ADDR		(0x08000000) 
/* 版本信息在FLASH中的存放地址 */
#define VERINFO_ADDR_BASE	(USER_PRO_START_ADDR + 0x00400) 

const char Hardware_Ver[16]  __attribute__((at(VERINFO_ADDR_BASE + 0x00)))  = HARDWARE_STRING;	//硬件版本
const char Firmware_Ver[16]  __attribute__((at(VERINFO_ADDR_BASE + 0x10)))  = FIRMWARE_STRING;	//固件版本
const char Compiler_Date[16] __attribute__((at(VERINFO_ADDR_BASE + 0x20)))  = __DATE__;			//编译日期
const char Compiler_Time[16] __attribute__((at(VERINFO_ADDR_BASE + 0x30)))  = __TIME__;			//编译时间

#else

/* AC6编译器版本 */
const char Hardware_Ver[16]  __attribute__((section(".ARM.__at_0x08000400")))  = HARDWARE_STRING;	//硬件版本
const char Firmware_Ver[16]  __attribute__((section(".ARM.__at_0x08000410")))  = FIRMWARE_STRING;	//固件版本
const char Compiler_Date[16] __attribute__((section(".ARM.__at_0x08000420")))  = __DATE__;			//编译日期
const char Compiler_Time[16] __attribute__((section(".ARM.__at_0x08000430")))  = __TIME__;			//编译时间
#endif

/**
 * @description: 打印版本信息
 * @return {*} null
 */
void version(void)
{
	printf("Hardware Version : %s\r\n", HARDWARE_STRING);
	printf("Firmware Version : %s\r\n", FIRMWARE_STRING);
	printf("Compiler Date    : %s %s\r\n", __DATE__, __TIME__);
}


